iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0
佛心分享-刷題不只是刷題

C++刷題:LeetCode Top 100 Liked系列 第 1

Day1 演算法介紹 : 二分搜尋法(Binary Search)

  • 分享至 

  • xImage
  •  

二元搜尋法(Binary Search),又稱作折半搜尋法、對數搜尋法,適用於有序陣列中搜尋目標元素的演算法,此演算法每進行一次比較將使搜尋範圍縮小一半。搜尋的過程從中間的元素開始,若中間的元素為搜尋的目標元素,則回傳中間值並結束搜尋 ; 若搜尋的目標元素大於或小於中間元素,則縮小搜尋範圍至目標元素所處的那一半範圍進行搜尋,重複進行此步驟直至搜尋到目標元素。若搜尋結果的回傳值皆為空,則代表此目標元素不在範圍內。

範例說明

題目 : { 1, 3, 5, 7, 9, 11, 13}在此排序的陣列中利用二分搜尋法尋找目標元素 3。

Step 1 : 尋找中間值,7 / 2 = 3.5, 第四個元素7為中間值,目標元素的值3小於中間值7,因此縮小搜尋範圍,將搜尋範圍的索引值縮小至0 ~ 2。

Step 2 : 在縮小範圍後的陣列 { 1, 3, 5 } 中再次搜尋中間值,3 / 2 = 1.5, 第二個元素3為中間值,目標元素的值3與中間值3相等,到這邊搜尋結束,並回傳搜尋的目標值。


優點:

  • 搜尋效率佳 : 二分搜尋法的時間複雜度是O(log⁡ n),每次搜尋都能將下一個搜尋範圍減半,可以提升在處理大規模數據時的效率。

缺點:

  • 需要排序數列:二分搜尋法僅適用於已經排序的數列。如果數列未排序,則必須先排序,這樣會增加額外的時間和空間。
  • 動態數據結構中不適用:在需要頻繁插入和刪除元素的數據結構中(如動態數組或鏈表),保持數列排序的開銷可能會抵消二分搜尋的優勢。此時其他數據結構(如平衡樹)可能更合適。

參考資料:二元搜尋法 - 維基百科


下一篇
Day2 Binary Search 題目1 : 33. Search in Rotated Sorted Array
系列文
C++刷題:LeetCode Top 100 Liked13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言